/**
 * 生成唯一ID主键
 * @return {string} 唯一id
 */
export const getUniqueId = () => {
  // 实例化时间
  const d = new Date();
  // 时间戳部分
  const timestampPart = d.getTime().toString(16);
  // 随机数部分
  const randomPart = Math.random().toString(16).slice(2);
  // 组合成唯一值
  const uniqueId = timestampPart + randomPart;
  // 返回唯一值
  return uniqueId;
};

/**
 * 获取当前时间戳
 * @return {number}
 */
export const getCurrentTime = () => {
  // 返回当前时间戳
  return new Date().getTime();
};

/**
 * 补全时间
 * @param {number} num
 */
export const patchNumber = (num: number) =>
  num < 10 && num >= 0 ? `0${num}` : num;

/**
 * 格式化时间
 * @param {number}  timestamp 时间戳
 */
export const formatTimestamp = (timestamp: number) => {
  if (!timestamp) return "";
  // 创建一个新的日期对象
  const date = new Date(timestamp);
  // 年份
  const year = date.getFullYear();
  // 月份（注意JavaScript的月份是从0开始的，所以我们需要加1）
  const month = date.getMonth() + 1;
  // 日
  const day = date.getDate();
  // 拼接日期部分
  const datePart = [year, patchNumber(month), patchNumber(day)].join("-");
  // 小时
  const hour = date.getHours();
  // 分钟
  const minute = date.getMinutes();
  // 秒
  const second = date.getSeconds();
  // 拼接时间部分
  const timePart = [
    patchNumber(hour),
    patchNumber(minute),
    patchNumber(second),
  ].join(":");
  // 格式化日期时间字符串
  return datePart + " " + timePart;
};
